# coding=utf-8
"""
Author: Mr.夏末
@Function: 实例变量与类变量
"""
class Dog:
    # 类变量:尽量使用类调用
    dog_type = "狗狗"


    # 构造函数：用来创建对象
    def __init__(self,name):
        """构造函数"""
        # 实例变量：尽量使用实例函数或对象调用
        self.name = name

    # 实例函数
    def bark(self):
        """实例函数"""
        print(self.name,"在叫")

    @classmethod
    def get_type(cls):
        """类函数"""
        # 类函数使用类变量
        print(cls.dog_type)
        cls.dog_type = "杂毛狗"


if __name__ == '__main__':
    dog1 = Dog("小白")
    dog2 = Dog("小黑")
    dog1.bark()
    dog2.bark()
    # 等同于创建了一个实例变量
    # dog2.dog_type = "哪里来的狗呀"
    print(dog1.dog_type)
    # 这里调的不再是类变量
    print(dog2.dog_type)

    print(Dog.dog_type)
    Dog.dog_type = "小野狗"
    print(dog2.dog_type)

    # 类函数使用类调用
    Dog.get_type()
    print(dog2.dog_type)
    print(dog1.dog_type)